使用
下载源码
1.从https://github.com/google/protobuf.git下载源码,解压,里面有支持不同语言的版本源码,我们只需要里面的支持objc的文件夹名为:
objectivec
2.新建一个工程命名为
ProtocolBufferTest
,创建一个文件夹,假设命名为:protocolbuf
, 把第一步的pb源码复制到此文件夹中:3.使用Xcode打开工程,点击左下角
+
, 引用protocolBuffer
源文件到工程中
(源文件里面有两个工程配置文件:ProtocolBuffers_iOS.xcodeproj
和ProtocolBuffers_OSX.xcodeproj
,引用ProtocolBuffers_iOS.xcodeproj
就好)
4.选中工程:
targets
—>Build Phases
—>Link Binary With Libraries
, 引用源码静态库文件:libProtocolBuffers.a
5.在工程设置搜索静态库的头文件(pb文件在protocolbuf文件夹里面):
targets
—>Build Setting
—>Search Paths
—>Header Search Paths
, 写入:$(PROJECT)/protocolbuf
6.编写测试文件
*.proto
,比如新建一个文件Person.proto
, 按照官方标准语法https://developers.google.com/protocol-buffers/
编写通用代码,写好后在终端进入该Person.proto
文件所在目录,使用protoc命令:protoc *.proto --objc_out=../Pro_out
进行编译。把Person.proto
文件编译成Person.pbobjc.h
和Person.pbobjc.m
, 生成的文件在Pro_out
文件夹里面。如果Person.proto
源文件有语法问题,编译时会报错;当编译时什么提示都没有,表示编译成功:将编译好的*.pbobjc.h
和*.pbobjc.m
拖入工程中,因为不支持arc, 所以需要在*.pbobjc.m
设置-fno-objc-arc
, 然后就可以使用了
7.序列化与反序列化
1 | Person *p = [[Person alloc] init]; |